# _*_ coding:utf-8 _*_
# 开发团队: Mavericks
# 开发人员：Maverick·Ming
# 开发IDE： PyCharm
#   项目名：HelloWorld
#   文件名：6.07 封装_装饰方法.py
# 开发时间：2021/3/26 11:36

# setter、getter方法分开，用起来分开用，很麻烦
# 有种方法，可以当作是属性一样用
class Person1:
    """This is a Human"""
    def __init__(self, name):
        self._name = name

    @property  # 将getter方法装饰成属性
    def name(self):
        return self._name

    @name.setter  # 将setter方法装饰成属性
    def name(self, name):
        self._name = name


p = Person1('momo')
# print(p.name())  # 获取p的name"momo"，如果没有()就无法获取
# 使用了property时，再调用p.name()会报错，因为不再是方法，是属性
print(p.name)  # 使用了property装饰器之后，name相当于是一个属性，不需要()也可以访问getter方法
# 使用了name.setter装饰器之后，可以出现同名name()方法（实际上是setter方法）
p.name = '毛毛'
print(p.name)
# 如此一来，对类的属性的操作，就像是对全局区域的属性进行的操作了，极其方便
# 看似调用属性，其实是调用方法

# 要有attribute.setter的setter(),前提是有@property的getter()，没有就不能读，就无法修改_attribute
# 但是这样是否会变回当初易于修改的了呢